<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>javascript 阶段</title>
    <style>
        .box {
            width: 100px;
            height: 100px;
            background-color: blue;
        }
        .line {
            width: 1000px;
            height: 5px;
            background-color: #000;
            margin: 10px 0;
        }
        .btn-start {
            padding: 10px 20px;
            cursor: pointer;
        }
    </style>
</head>
<body>
    <div class="box"></div>
    <div class="line"></div>
    <button class="btn-start">改变宽度</button>

    <script>
        // 思路分析:
            // 需要控制哪个标签   div span ---->   dom 
            // 控制这个标签什么样式(属性)  width height margin padding ---->  prop
            // 设置这个标签的属性值为多少  1000px  500px  100px   ----> value
            
        // 动画原理:
            // 目标属性值 = 当前属性值 + 步长 

        // 封装函数 V1.0.0
        function animate(dom,prop,value){
            // 清除定时器 (防抖思想)
            clearInterval(dom.timer);
            // 执行定时器
            dom.timer = setInterval(function(){
                // 记录目标属性值
                var target = parseInt(value);
                // 获取当前的属性值
                var cur = parseInt(getComputedStyle(dom)[prop]);
                // 记录步长
                var speed = 10;
                // 判断当前属性值是否达到目标位置
                if(cur >= target){
                    console.log("当前属性值: "+cur);
                    clearInterval(dom.timer);
                    return ;
                }
                // 设置dom的样式
                dom.style[prop] = cur + speed +"px";
            },30)
        }

        // 获取.box标签 和 按钮标签
        var box = document.querySelector(".box");
        var btn = document.querySelector(".btn-start");

        // 事件绑定
        btn.onclick = function(){
            // 调用动画函数
            // animate(box,"height","200px");
            animate(box,"width","1000px");
            // animate(box,"marginLeft","500px");
        }


    </script>
</body>
</html>